home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok17.lha
/
IFFtoImage
/
Sources
/
Fenster.def
next >
Wrap
Text File
|
1993-08-15
|
4KB
|
117 lines
DEFINITION MODULE Fenster;
(* Definitionsmodul zum Hilfsmodul zur Erstellung einfacher Fenster
unter Intuition. *)
FROM Intuition IMPORT IntuiMessagePtr, IDCMPFlagSet,
ScreenPtr, WindowPtr;
FROM Graphics IMPORT RastPortPtr, ViewPortPtr;
FROM Exec IMPORT MsgPortPtr;
PROCEDURE BildSchirm():ScreenPtr;
(* Prozedur zum einfachen Öffnen eines Screens, liefert
bei Erfolg einen Zeiger auf den geöffneten Screen zurück.*)
PROCEDURE FensterAuf(links,oben,breit,hoch:INTEGER;
t:ARRAY OF CHAR;sP:ScreenPtr):WindowPtr;
(* links : Abstand des Fensters von der linken
Bildschirmkante,
oben : Abstand des Fensters von der Bildschirm-
oberkante,
breit : Breite des Fensters,
hoch : Höhe des Fensters.
Alle Werte in Pixel!
t : Titel des Fensters. (ein String!)
sP : Zeiger auf aktuellen Screen.
return: Zeiger auf das Fenster. *)
PROCEDURE Info(up:MsgPortPtr;VAR code:CARDINAL):IDCMPFlagSet;
(* up : Ist der MessagePortPointer, der im Anwenderprogramm
mittels up := wp^.userPort; geholt werden muß.
wp ist dabei der Fensterzeiger, den die Funktions-
Prozedur FensterAuf zurück gibt.
code : Rückgabewert, z.B. Tastatur-Scan-Code.
return : Info ist eine Funktions-Prozedur, die den
Wert der Record-Variablen class zurück gibt. *)
PROCEDURE CLS(rp:RastPortPtr;b,h:INTEGER);
(* rp : ist der Zeiger auf den RastPort des Fensters,
er wird mittels rp := wp^.rPort geholt.
b : ist die Breite (- 3 Pixel) des Fensterausschnitts,
der mit der Hintergrundfarbe gefüllt wird.
h : ist die Höhe (-2 Pixel) des Fensterausschnitts ...
Bem.: Als linker oberer Eckpunkt wird (1/1) angenommen. *)
PROCEDURE Farben(vp:ViewPortPtr);
(* Diese Prozedur dient zur Definition der Zeichenfarben.
vp : ist der ViewPortPtr des Screens, er wird aus dem
ScreenPtr sp mittels vp := ADR(sp^.viewPort)
gewonnen. *)
(* Private *) PROCEDURE Length(t:ARRAY OF CHAR):INTEGER;
(* Length(t) gibt die Länge des Strings t zurück.
Bei der kommerziellen Version des M2Amiga-Kompilers
gibt es ein MODULE Strings, in dem auch eine Prozedur
Length(t) existiert. Da wir den hier nicht voraussetzen,
müssen wir Length(t) selbst bauen!
*Private*, weil die Prozedur Length(t) nur innerhalb
dieses Moduls verwendet wird! *)
PROCEDURE Print(rp:RastPortPtr;f,x,y:INTEGER;t:ARRAY OF CHAR);
(* Print(rp,x,y,t) ist so etwas ähnliches wie das alte
'PRINT AT' von BASIC.
rp : RastPortPtr des Fensters in den geschrieben
werden soll.
f : ist die Farbnummer des Schreibstiftes (0..3).
x,y: sind die x- und y-Koordinaten (linke obere Ecke)
in Pixel an der der Text beginnen soll.
t : ist nun der zu schreibende Textstring. *)
PROCEDURE Echo(rp:RastPortPtr;f,x,y:INTEGER;t:CHAR);
(* Dient dazu ein einzelnes ASCII-Zeichen in einem Fenster
auszugeben. Anwendung: Tastaturecho erzeugen, da dies
bei einem Intuition-Fenster fehlt!
rp, f, x, und y haben die gleiche Bedeutung wie bei Print,
t ist hier aber nur ein einzelner CHAR. *)
PROCEDURE GetASCII(up:MsgPortPtr):CARDINAL;
(* Holt den ASCII-Wert eines Zeichens vom Intuition-
MessagePort ab. *)
END Fenster.